// 这个是全文的文档吗

package main

import (
	"fmt"
	"go/ast"
	"go/parser"
	"go/token"
)

// TestDocType 测试属性的注释类型
var TestDocType string

// testDoc 测试一下解析方法
func testDoc() {

}

// main 入口方法
// 测试官方的parser解析方法怎么使用
func main() {
	fset := token.NewFileSet()
	//解析当前文件
	p, _ := parser.ParseFile(fset, "main.go", nil, parser.ParseComments)

	//输出解析信息
	fmt.Printf("%v", p)
	for _, v := range p.Decls {
		v.Pos()
		v.End()
	}
	for _, c := range p.Comments {
		for _, l := range c.List {
			fmt.Println(l.Text)
		}
	}
	for _, s := range p.Imports {
		fmt.Println(s.Path.Value)
	}
	for _, d := range p.Decls {
		switch dd := d.(type) {
		case *ast.FuncDecl:
			fmt.Printf("func %v \n", dd.Name)
			fmt.Printf("text: %v", dd.Doc.Text())
			for _, text := range dd.Doc.List {
				fmt.Printf("%v\n", text.Text)
			}
		}
	}

	fmt.Println(p.Doc.Text())
}
